﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BL.Entities;
namespace zCO
{
    public partial class frmEditPrestacion : Form
    {
        ColeccionObrasSociales oSM;
        ColeccionPrestaciones cpAdd;
        ColeccionPrestaciones cpUpdate;
        public frmEditPrestacion()
        {
            InitializeComponent();
        }

        private void frmEditPrestacion_Load(object sender, EventArgs e)
        {
            FillGrid(ColeccionPrestaciones.FindAll());
            //oSM = ColeccionObrasSociales.Current;
            //cmbObra.Items.Add("Seleccionar...");
            //DataGridViewComboBoxColumn dgvCmb = new DataGridViewComboBoxColumn();
            //dgvCmb.DataSource = oSM;
            //dgvCmb.DisplayMember = "NombreObra";
            //dgvCmb.ValueMember = "NombreObra";
            //dgvCmb.DataPropertyName = "NombreObra";
            //foreach (var item in oSM)
            //{
            ////    dgvCmb.Items.Add(item.NombreObra);                
            //    cmbObra.Items.Add(item.NombreObra);                
            //}
            //dgv.Columns.Insert(0,dgvCmb);

            //dgv.Columns[0].HeaderText = "Obra Social";
            
            //cmbObra.SelectedIndex = 0;
            //DataGridViewColumn dgvC = new DataGridViewColumn();
            //dgvC.Name = "Obra Social";
            
        }

        private void cmbObra_SelectedValueChanged(object sender, EventArgs e)
        {
          
        }


        private void FillGrid(ColeccionPrestaciones pM) {

            //dgv.DataSource = pM;
            if (pM != null)
            {
                foreach (var item in pM)
                {
                    dgv.Rows.Add(item.IdPrestacion.ToString(), item.Detalle);
                }
            }
         
        }

        //private void cmbObra_SelectedIndexChanged(object sender, EventArgs e)
        //{

        //    if ( cmbObra.Items[cmbObra.SelectedIndex].ToString()  == "Seleccionar...")
        //    {

        //        FillGrid(ColeccionPrestaciones.FindAll());
                
        //    }
        //    else
        //    {
        //        FillGrid(ColeccionPrestaciones.Current.getByObraSocial(cmbObra.Items[cmbObra.SelectedIndex].ToString()));
        //    }
        //}

        private void dgv_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            //if (ColeccionPrestaciones.Current.FindByID(dgv[0, e.RowIndex].Value.ToString()) != null)
            //{
            //    frmABMPrestaciones frm = new frmABMPrestaciones(ColeccionPrestaciones.Current.FindByID(dgv[0, e.RowIndex].Value.ToString()));
            //    frm.Show();
            //}
        }

        private void frmEditPrestacion_FormClosing(object sender, FormClosingEventArgs e)
        {
            int cant = checkChanges();

            if (cant > 0)
            {

                DialogResult dr = MessageBox.Show("Se modificaron " + cant.ToString() + " registros. ¿Desea Guardar los cambios?", "Editar Prestaciones", MessageBoxButtons.YesNoCancel);
                switch (dr)
                {
                    case DialogResult.Abort:
                        break;
                    case DialogResult.Cancel:
                        e.Cancel = true;
                        break;
                    case DialogResult.Ignore:
                        break;
                    case DialogResult.No:
                        break;
                    case DialogResult.None:
                        break;
                    case DialogResult.OK:
                        break;
                    case DialogResult.Retry:
                        break;
                    case DialogResult.Yes:
                        Guardar();
                        e.Cancel = false;

                        break;
                    default:
                        break;
                }
            }
            else {
                e.Cancel = false;
            }
        }

        private int checkChanges()
        {
            int cant = 0;

            int ind = 0;

            Prestaciones p;
            Prestaciones pOld;
            Int32 aux;
            cpAdd = new ColeccionPrestaciones();
            cpUpdate = new ColeccionPrestaciones();
            foreach (var item in dgv.Rows)
            {
                if (dgv[0, ind].Value != null && dgv[1, ind].Value != null)
                {

                    p = new Prestaciones();
                   
                    if (Int32.TryParse(dgv[0, ind].Value.ToString(), out aux))
                    {
                        pOld =ColeccionPrestaciones.Current.FindByID(aux.ToString());
                       
                        p.IdPrestacion = aux;
                        p.Detalle = dgv[1, ind].Value.ToString();
                        if (pOld == null)
                        {
                           
                            cpAdd.Add(p);
                            cant++;
                        }
                        else if(pOld.Detalle != p.Detalle ){

                            cpUpdate.Add(p);
                            cant++;
                        }                        
                        
                    }
                    ind++;
                }

            }

            return cant;
        }

        private void Guardar()
        {

            foreach (var item in cpAdd )
            {
                item.Save();

            }

            foreach (var item in cpUpdate )
            {
                item.SaveUpdate();
            }
            ColeccionPrestaciones.Current.Clear();
            ColeccionPrestaciones.Current = null;
            ColeccionObrasSociales.Current.Clear();
            ColeccionObrasSociales.Current = null;
        }

        private void cmdCancelar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void cmdAceptar_Click(object sender, EventArgs e)
        {
            int cant = checkChanges();

            if (cant > 0)
            {

                DialogResult dr = MessageBox.Show("Se modificaron " + cant.ToString() + " registros. ¿Desea Guardar los cambios?", "Editar Prestaciones", MessageBoxButtons.YesNoCancel);
                switch (dr)
                {
                    case DialogResult.Abort:
                        break;
                    case DialogResult.Cancel:                        
                        break;
                    case DialogResult.Ignore:
                        break;
                    case DialogResult.No:
                        this.Close();
                        break;
                    case DialogResult.None:
                        break;
                    case DialogResult.OK:
                        break;
                    case DialogResult.Retry:
                        break;
                    case DialogResult.Yes:
                        Guardar();
                        this.Close();
                        break;
                    default:
                        break;
                }
            }
            else
            {
                this.Close();
            }
        }


        private void cmdPrint_Click(object sender, EventArgs e)
        {
            Excel.Imprimir(dgv,true);

        }

        private void cmdExcel_Click(object sender, EventArgs e)
        {
            Excel.export(dgv,true);
        }
    }
}
